using System;
using Rdl;

namespace GTame.ReportParser
{

    public class ReportParameterType
    {

        private Nullable<bool> _AllowBlank;
        private ReportParameterTypeDataType _DataType;
        private DefaultValueType _DefaultValue;
        private Nullable<bool> _Hidden;
        private Nullable<bool> _MultiValue;
        private Nullable<bool> _Nullable;
        private string _Prompt;
        private ReportParameterTypeUsedInQuery _UsedInQuery;
        private ValidValuesType _ValidValues;
        private string nameField;

        public Nullable<bool> AllowBlank
        {
            get
            {
                return _AllowBlank;
            }
            set
            {
                _AllowBlank = value;
            }
        }

        public ReportParameterTypeDataType DataType
        {
            get
            {
                return _DataType;
            }
            set
            {
                _DataType = value;
            }
        }

        public DefaultValueType DefaultValue
        {
            get
            {
                if (_DefaultValue == null)
                    _DefaultValue = new DefaultValueType();
                return _DefaultValue;
            }
            set
            {
                _DefaultValue = value;
            }
        }

        public Nullable<bool> Hidden
        {
            get
            {
                return _Hidden;
            }
            set
            {
                _Hidden = value;
            }
        }

        public Nullable<bool> MultiValue
        {
            get
            {
                return _MultiValue;
            }
            set
            {
                _MultiValue = value;
            }
        }

        public string Name
        {
            get
            {
                return nameField;
            }
            set
            {
                nameField = value;
            }
        }

        public Nullable<bool> Nullable
        {
            get
            {
                return _Nullable;
            }
            set
            {
                _Nullable = value;
            }
        }

        public string Prompt
        {
            get
            {
                return _Prompt;
            }
            set
            {
                _Prompt = value;
            }
        }

        public ReportParameterTypeUsedInQuery UsedInQuery
        {
            get
            {
                return _UsedInQuery;
            }
            set
            {
                _UsedInQuery = value;
            }
        }

        public ValidValuesType ValidValues
        {
            get
            {
                if (_ValidValues == null)
                    _ValidValues = new ValidValuesType();
                return _ValidValues;
            }
            set
            {
                _ValidValues = value;
            }
        }

        public ReportParameterType()
        {
            _AllowBlank = new Nullable<bool>[]();
            _Hidden = new Nullable<bool>[]();
            _MultiValue = new Nullable<bool>[]();
            _Nullable = new Nullable<bool>[]();
        }

        public ReportParameterType Write()
        {
            // trial
            return null;
        }

    } // class ReportParameterType

}

